// 定义全局变量用于保存搜索框的值
let searchInputValue = "";

$(document).ready(function () {
    // 初始加载第一页数据
    getAllFiles(1);
});

// 定义分页大小
const pageSize = 10;

// 获取文件列表
function getAllFiles(page) {
    // 发送请求获取文件列表
    $.ajax({
        url: '/getAllPlugins',
        type: 'GET',
        data: { page: page,
            pageSize: pageSize,
            search: searchInputValue},
        success: function (response) {
            const pluginList = response.pluginList;
            const totalPage = response.totalPage;

            // 渲染文件列表
            renderFileList(pluginList,page);
            // 渲染分页器
            renderPagination(totalPage,page);
        },
        error: function (error) {
            console.log(error);
        }
    });
}

// 渲染文件列表
function renderFileList(pluginList,currentPage) {
    // 清空文件列表
    $("#file-list-body").empty();

    // 循环渲染当前页的文件列表
    for (let i = 0; i < pluginList.length; i++) {
        const plugin = pluginList[i];

        const tr = $("<tr>").appendTo("#file-list-body");

        $("<td>").text(plugin.pluginName).appendTo(tr);
        $("<td>").text(plugin.pluginPath).appendTo(tr);
        $("<td>").text(plugin.isLoad).appendTo(tr);

        const td = $("<td>").appendTo(tr);
        const btnGroup = $("<div>").addClass("btn-group").appendTo(td);

        $("<a>").text("删除")
            .addClass("btn")
            .click(function () {
                // 发送请求禁止文件
                $.ajax({
                    url: '/deletePlugin',
                    type: 'GET',
                    data: { id: plugin.id },
                    dataType: 'text',
                    success: function () {
                        // 重新加载当前页数据
                        getAllFiles(currentPage);
                    },
                    error: function (error) {
                        console.log(error);
                    }
                });
            })
            .appendTo(btnGroup);

        $("<a>").text("禁止")
            .addClass("btn btn-delete")
            .click(function () {
                // 发送请求禁止文件
                $.ajax({
                    url: '/disablePlugin',
                    type: 'GET',
                    data: { id: plugin.id },
                    dataType: 'text',
                    success: function () {
                        // 重新加载当前页数据
                        getAllFiles(currentPage);
                    },
                    error: function (error) {
                        console.log(error);
                    }
                });
            })
            .appendTo(btnGroup);

        $("<a>").text("启动")
            .addClass("btn btn-rename")
            .click(function () {
                // 发送请求重命名
                $.ajax({
                    url: '/startupPlugin',
                    type: 'GET',
                    data: { id: plugin.id},
                    dataType: 'text',
                    success: function () {
                        // 重新加载当前页数据
                        getAllFiles(currentPage);
                    },
                    error: function (error) {
                        console.log(error);
                    }
                });
            }).appendTo(btnGroup);
    }
}

// 渲染分页器
function renderPagination(totalPage,currentPage) {
    // 清空分页器
    $(".pagination").empty();

    // 添加上一页按钮
    $("<li>").addClass("page-item")
        .addClass(currentPage === 1 ? "disabled" : "")
        .append($("<a>").addClass("page-link").text("上一页"))
        .click(function () {
            if (currentPage > 1) {
                getAllFiles(currentPage - 1);
            }
        })
        .appendTo(".pagination");

    // 添加页面数字按钮
    for (let i = 1; i <= totalPage; i++) {
        $("<li>").addClass("page-item")
            .addClass(currentPage === i ? "active" : "")
            .append($("<a>").addClass("page-link").text(i))
            .click(function () {
                getAllFiles(i);
            })
            .appendTo(".pagination");
    }

    // 添加下一页按钮
    $("<li>").addClass("page-item")
        .addClass(currentPage === totalPage ? "disabled" : "")
        .append($("<a>").addClass("page-link").text("下一页"))
        .click(function () {
            if (currentPage < totalPage) {
                getAllFiles(currentPage + 1);
            }
        })
        .appendTo(".pagination");
}

// 搜索文件
function searchFiles() {
    // 获取搜索框内容
    searchInputValue = $("#search-input").val();

    // 重新加载当前页数据
    getAllFiles(1);
}

// function uploadFile() {
//     var fileInput = document.getElementById("file-input");
//     var file = fileInput.files[0];
//
//     var formData = new FormData();
//     formData.append("file", file);
//
//     var xhr = new XMLHttpRequest();
//
//     xhr.upload.addEventListener("progress", function (e) {
//         if (e.lengthComputable) {
//             var percentComplete = (e.loaded / e.total) * 100;
//             var progress = document.getElementById("upload-progress");
//             progress.value = percentComplete;
//         }
//     });
//
//     xhr.onreadystatechange = function () {
//         if (xhr.readyState === 4) {
//             var message = document.getElementById("upload-message");
//             if (xhr.status === 200) {
//                 message.textContent = "文件上传成功！";
//                 // 重新加载当前页数据
//                 getAllFiles(1);
//             } else {
//                 message.textContent = "文件上传失败！";
//             }
//         }
//     };
//
//     xhr.open("POST", "/uploadPlugin");
//     xhr.send(formData);
// }
function uploadFile() {
    document.getElementById('file-input').click();
    document.getElementById("file-input").addEventListener("change", function() {
        var fileInput = document.getElementById("file-input");
        var file = fileInput.files[0];

        var formData = new FormData();
        formData.append("file", file);

        var xhr = new XMLHttpRequest();

        xhr.upload.addEventListener("progress", function (e) {
            if (e.lengthComputable) {
                var percentComplete = (e.loaded / e.total) * 100;
                var progress = document.getElementById("upload-progress");
                progress.value = percentComplete;
            }
        });

        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                var message = document.getElementById("upload-message");
                if (xhr.status === 200) {
                    var response = xhr.responseText;
                    // 重新加载当前页数据
                    getAllFiles(1);
                    message.textContent = "文件上传成功！";
                } else {
                    message.textContent = "文件上传失败！";
                }
            }
        };

        xhr.open("POST", "/uploadPlugin");
        xhr.send(formData);
    });
}